Sensor Fusion for Kinetis MCUs (ISSDK/KSDK version)
driver_systick.c File Reference
+ Include dependency graph for driver_systick.c:

Go to the source code of this file.

Macros

#define SYST_CSR   SysTick->CTRL
 
#define SYST_RVR   SysTick->LOAD
 
#define SYST_CVR   SysTick->VAL
 

Functions

void ARM_systick_enable (void)
 
void ARM_systick_start_ticks (int32 *pstart)
 
int32 ARM_systick_elapsed_ticks (int32 start_ticks)
 
void ARM_systick_delay_ms (uint32 iSystemCoreClock, uint32 delay_ms)
 

Macro Definition Documentation

#define SYST_CSR   SysTick->CTRL

Definition at line 38 of file driver_systick.c.

Referenced by ARM_systick_enable().

#define SYST_CVR   SysTick->VAL

Definition at line 40 of file driver_systick.c.

Referenced by ARM_systick_elapsed_ticks(), and ARM_systick_start_ticks().

#define SYST_RVR   SysTick->LOAD

Definition at line 39 of file driver_systick.c.

Referenced by ARM_systick_elapsed_ticks(), and ARM_systick_enable().

Function Documentation

void ARM_systick_delay_ms ( uint32  iSystemCoreClock,
uint32  delay_ms 
)

Definition at line 75 of file driver_systick.c.

Referenced by initializeFusionEngine().

76 {
77  int32 istart_ticks; // start ticks on entry
78  int32 ielapsed_ticks; // elapsed ticks
79  int16 i; // loop counter
80 
81  // loop for requested number of ms
82  for (i = 0; i < delay_ms; i++)
83  {
84  // loop until 1ms has elapsed
85  ARM_systick_start_ticks(&istart_ticks);
86  do
87  {
88  ielapsed_ticks = ARM_systick_elapsed_ticks(istart_ticks);
89  } while (ielapsed_ticks < iSystemCoreClock / 1000);
90  }
91 
92  return;
93 }
int32_t int32
Definition: sensor_fusion.h:57
int32 ARM_systick_elapsed_ticks(int32 start_ticks)
int16_t int16
Definition: sensor_fusion.h:56
void ARM_systick_start_ticks(int32 *pstart)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int32 ARM_systick_elapsed_ticks ( int32  start_ticks)

Definition at line 64 of file driver_systick.c.

Referenced by ARM_systick_delay_ms(), and fFuseSensors().

65 {
66  int32 elapsed_ticks;
67 
68  // subtract the stored start ticks and check for wraparound down through zero
69  elapsed_ticks = start_ticks - (SYST_CVR & 0x00FFFFFF);
70  if (elapsed_ticks < 0) elapsed_ticks += SYST_RVR;
71 
72  return elapsed_ticks;
73 }
int32_t int32
Definition: sensor_fusion.h:57
#define SYST_RVR
#define SYST_CVR

+ Here is the caller graph for this function:

void ARM_systick_enable ( void  )

Definition at line 47 of file driver_systick.c.

Referenced by initializeFusionEngine().

48 {
49  SYST_CSR = 0x5u; // enable systick from internal clock
50  SYST_RVR = 0x00FFFFFFu; // set reload to maximum 24 bit value
51  return;
52 }
#define SYST_RVR
#define SYST_CSR

+ Here is the caller graph for this function:

void ARM_systick_start_ticks ( int32 pstart)

Definition at line 55 of file driver_systick.c.

Referenced by ARM_systick_delay_ms(), and fFuseSensors().

56 {
57  // store the 24 bit systick timer
58  *pstart = SYST_CVR & 0x00FFFFFF;
59 
60  return;
61 }
#define SYST_CVR

+ Here is the caller graph for this function: